home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 SRC / Mac / Modules / snd / sndscan.py < prev    next >
Text File  |  1996-04-12  |  3KB  |  107 lines

  1. # Scan Sound.h header file, generate sndgen.py and Sound.py files.
  2. # Then import sndsupport (which execs sndgen.py) to generate Sndmodule.c.
  3. # (Should learn how to tell the compiler to compile it as well.)
  4.  
  5. import addpack
  6. addpack.addpack(':Tools:bgen:bgen')
  7. from bgenlocations import TOOLBOXDIR
  8.  
  9. from scantools import Scanner
  10.  
  11. def main():
  12.     input = "Sound.h"
  13.     output = "sndgen.py"
  14.     defsoutput = TOOLBOXDIR + "Sound.py"
  15.     scanner = SoundScanner(input, output, defsoutput)
  16.     scanner.scan()
  17.     scanner.close()
  18.     print "=== Done scanning and generating, now doing 'import sndsupport' ==="
  19.     import sndsupport
  20.     print "=== Done.  It's up to you to compile Sndmodule.c ==="
  21.  
  22. class SoundScanner(Scanner):
  23.  
  24.     def destination(self, type, name, arglist):
  25.         classname = "SndFunction"
  26.         listname = "functions"
  27.         if arglist:
  28.             t, n, m = arglist[0]
  29.             if t == "SndChannelPtr" and m == "InMode":
  30.                 classname = "SndMethod"
  31.                 listname = "sndmethods"
  32.         return classname, listname
  33.  
  34.     def makeblacklistnames(self):
  35.         return [
  36.             'SndDisposeChannel',        # automatic on deallocation
  37.             'SndAddModifier',        # for internal use only
  38.             'SndPlayDoubleBuffer',        # very low level routine
  39.             # Obsolete:
  40.             'StartSound',
  41.             'StopSound',
  42.             'SoundDone',
  43.             # These are soundMgr 3.0 routines that I can't seem to find...
  44.             'GetSoundPreference',
  45.             'SetSoundPreference',
  46.             'GetCompressionInfo',
  47.             # And 3.1 calls, ditto...
  48.             'SndGetInfo',
  49.             'SndSetInfo',
  50.  
  51.             ]
  52.  
  53.     def makeblacklisttypes(self):
  54.         return [
  55.             "GetSoundVol",
  56.             "SetSoundVol",
  57.             "UnsignedFixed",
  58.             # Don't have the time to dig into this...
  59.             "Component",
  60.             ]
  61.  
  62.     def makerepairinstructions(self):
  63.         return [
  64.             ([("Str255", "*", "InMode")],
  65.              [("*", "*", "OutMode")]),
  66.             
  67.             ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
  68.              [("InBuffer", "*", "*")]),
  69.             
  70.             ([("void", "*", "OutMode"), ("long", "*", "InMode"),
  71.                                         ("long", "*", "OutMode")],
  72.              [("VarVarOutBuffer", "*", "InOutMode")]),
  73.             
  74.             ([("SCStatusPtr", "*", "InMode")],
  75.              [("SCStatus", "*", "OutMode")]),
  76.             
  77.             ([("SMStatusPtr", "*", "InMode")],
  78.              [("SMStatus", "*", "OutMode")]),
  79.              
  80.             ([("CompressionInfoPtr", "*", "InMode")],
  81.              [("CompressionInfo", "*", "OutMode")]),
  82.             
  83.             # For SndPlay's SndListHandle argument
  84.             ([("Handle", "sndHdl", "InMode")],
  85.              [("SndListHandle", "*", "*")]),
  86.              
  87.             # For SndStartFilePlay
  88.             ([("long", "bufferSize", "InMode"), ("void", "theBuffer", "OutMode")],
  89.              [("*", "*", "*"), ("FakeType('0')", "*", "InMode")]),
  90.             
  91.             # For Comp3to1 etc.
  92.             ([("void_ptr", "inBuffer", "InMode"),
  93.               ("void", "outBuffer", "OutMode"),
  94.               ("unsigned_long", "cnt", "InMode")],
  95.              [("InOutBuffer", "buffer", "InOutMode")]),
  96.             
  97.             # Ditto
  98. ##            ([("void_ptr", "inState", "InMode"), ("void", "outState", "OutMode")],
  99. ##             [("InOutBuf128", "state", "InOutMode")]),
  100.             ([("StateBlockPtr", "inState", "InMode"), ("StateBlockPtr", "outState", "InMode")],
  101.              [("StateBlock", "state", "InOutMode")]),
  102.  
  103.             ]
  104.  
  105. if __name__ == "__main__":
  106.     main()
  107.